<?php
class GastoController extends AppController 
{
	var $name = 'Gasto';
	var $layout =  "ajax";
	var $components = array('Interfaz','Vista');
	var $helpers = array('Interfaz','Vista','Ayuda');
	var $uses = array('Gasto','Proveedor','Trabajador','Tipogasto','Detallegasto','Unidad','Soporte','Clasificacion','Patologia','Gastotemporal','Detallegastotemporal','Perfil');
	public function beforeFilter(){
  		$this->validar();
  	}


 	function eliminar_detalle_temporal($id,$gastotemporal_id2)
	{
		$total=0;
		$id=$this->Interfaz->id($id);
		if(isset($id)){
		$this->Detallegastotemporal->deleteAll(array('Detallegastotemporal.id' => $id), false);
		$detalles=$this->Detallegastotemporal->find('all',array('conditions'=> array("Detallegastotemporal.gastotemporal_id "=>$gastotemporal_id2)));
			 			for($i=0; $i<count($detalles); $i++){
	                        $total=$detalles[$i]['Detallegastotemporal']['monto']+$total;
	                    }
					    $gastotemporal=$this->Gastotemporal->find('first',array('conditions'=>array('Gastotemporal.id'=>$gastotemporal_id2)));
					    $this->Gastotemporal->query('BEGIN WORK');
					    if(isset($gastotemporal['Gastotemporal']['id'])){	
					        $montos['Gastotemporal']['id']=$gastotemporal_id2;	
							$montos['Gastotemporal']['total']=$total;
							if($this->Gastotemporal->save($montos)){
							$this->Gastotemporal->query('COMMIT');	
							}
							else{
							$this->Vista->mensaje('OCURRIO UN ERROR  AL ACTUALIZAR EL MONTO DEL REEMBOLSO','ERROR','');
							$this->Gastotemporal->query('ROLLBACK');
							}
							echo "<script type=\"text/javascript\" language=\"javascript\">
							document.getElementById('total').value = $total;
							</script>"; 
				     	}
	    }
	    else{
        $this->Vista->mensaje("Ocurrio un error al eliminar el detalle",'ERROR');
	    }

        if(count($detalles)>0){
	    $this->buscar_detalles_cargados_a_reembolso($gastotemporal_id2);
	    $this->render('buscar_detalles_cargados_a_reembolso');
	    }else{
	    $this->render('cargar_detalles');
	    }
 	}


 	function index()
	{
 	}

 	public function listado_gasto($busq=null) {	 		
		$this->set('busq',$busq);
 		$this->permisos_menu_individual('gastos');
        $condiciones['Gasto.id >']=0;
 		$condiciones['Trabajador.unidad_id']=$this->Perfil->unidades($this->Interfaz->id($_SESSION['usuario_id']));
		$total=$this->Gasto->find('count',array('conditions'=> $condiciones ));
		$this->Gasto->recursive=2;
		$data=$this->Gasto->find('all',array('conditions'=> $condiciones,'limit'=>MAX_PAGI));
		if($total>MAX_PAGI) $mos=MAX_PAGI;
		else $mos=$total;
		$this->set('data',$data);
		$this->Vista->title('Reembolsos Encontrados (Mostrando '.$mos.' de '.$total.' Registros Encontrados)');
	}


	public function nuevo($id=null, $vent=null , $div='vista',$divlistado='vista') 
	{	
		$this->permisos_opcion_individual('gastos','nuevo','estatus'); // mensaje que se quiere mostrar
		$id=$this->Interfaz->id($id);
		if(isset($id)){
			$this->Vista->cerrar_ventana($vent);
			$this->set('div',$div);
			$this->set('divlistado',$divlistado);
			$datos=$this->Trabajador->find('first',array('conditions'=>array('Trabajador.id'=>$id)));
			$this->set('data',$datos);
			$this->set('lista_patologias',$this->Patologia->find('list', array('fields' => array('Patologia.id', 'Patologia.nombre' ),'order'=>'Patologia.nombre ASC')));
	    }
	    else{
			$this->Vista->mensaje("Estas intentando violar la seguridad agropatria",'ERROR');
		}

	}



	public function cargar_gastos($patologia_id=null,$trabajador_id=null,$observacion=null)
	{
		$mostrar=0;
		if(empty($patologia_id))
		{
			$this->Vista->monta_imagem('patologia_id');
			$this->Vista->mensaje('EL NOMBRE DE LA PATOLOGIA ES OBLIGATORIO','ERROR','patologia_id');
		}
		else{
				$this->Gastotemporal->query('BEGIN WORK');
				$data['Gastotemporal']['patologia_id']=$patologia_id;
				$data['Gastotemporal']['observacion']=$this->Utilitario->mayuscula($observacion);
				$data['Gastotemporal']['trabajador_id']=$trabajador_id;
				$data['Gastotemporal']['estatus']=1;
		        $data['Gastotemporal']['usuario']=$this->Interfaz->id($this->Session->read('usuario_id'));
				if($this->Gastotemporal->save($data))
				{
					$id=$this->Gastotemporal->id;
					$this->set('gastotemporal_id',$id);
					$this->set('lista_tipo',$this->Tipogasto->find('list', array('fields' => array('Tipogasto.id', 'Tipogasto.servicio'),'order'=>'Tipogasto.id ASC')));
					$this->set('lista_soporte',$this->Soporte->find('list', array('fields' => array('Soporte.id', 'Soporte.nombre'),'order'=>'Soporte.id ASC')));
					$mostrar=1;
					echo "<script type=\"text/javascript\" language=\"javascript\">
						document.getElementById('ver_rubros_a_cargar_nuevo').style.display='block';
						document.getElementById('btn_asigna_rubros').disabled = true;
						document.getElementById('patologia_id').disabled = true;
						document.getElementById('observacion').readonly = true;
					</script>";
					$this->Gastotemporal->query('COMMIT');	
				}
				else
				{
					$this->Vista->mensaje('OCURRIO UN ERROR AL REGISTRAR EL REEMBOLSO','ERROR','vacio');
					$mostrar=0;		
					$this->Gastotemporal->query('ROLLBACK');
				}
		}

		$this->set('mostrar',$mostrar);
	}

	public function cargar_detalles($gastotemporal_id=null,$tipogasto_id=null,$monto=null,$numero_factura=null,$fecha_emision=null,$proveedor_id=null,$soporte_id=null,$documento=null)
	{
		$mostrar=0;
		$total=0;
		$detalles= array();
		$ruta=ROOT.DS.WEBROOT_DIR.DS."files".DS;
		$d = $this->Gastotemporal->find('first',array('conditions'=>array('Gastotemporal.id'=>$gastotemporal_id)));
		$this->set('datos',$d);
		if(empty($gastotemporal_id))
		{
			$this->Vista->mensaje("LOS DATOS DEL GASTO SON OBLIGHATORIOS $gastotemporal_id",'ERROR','gastotemporal_id');
		}
		else if(empty($tipogasto_id))
		{
			$this->Vista->monta_imagem('tipogasto_id');
			$this->Vista->mensaje('EL TIPO DE GASTO ES OBLIGATORIO','ERROR');
		}
		else if(empty($monto))
		{
			$this->Vista->monta_imagem('monto');			
			$this->Vista->mensaje('EL MONTO ES OBLIGATORIO','ERROR');
		}
		else if(empty($numero_factura))
		{
			$this->Vista->monta_imagem('numero_factura');
			$this->Vista->mensaje('EL NUMERO DE FACTURA ES OBLIGATORIO','ERROR');
		}
		else if(empty($fecha_emision))
		{
			$this->Vista->monta_imagem('fecha_emision');
			$this->Vista->mensaje('LA FECHA DE EMISION DE LA FACTURA ES OBLIGATORIA','ERROR');
		}
		else if(empty($proveedor_id))
		{
			$this->Vista->monta_imagem('proveedor_rif');
			$this->Vista->mensaje('EL PROVEEDOR ES OBLIGATORIO','ERROR');
		}
		else if(empty($soporte_id))
		{
			$this->Vista->monta_imagem('soporte_id');
			$this->Vista->mensaje('EL TIPO DE SOPORTE ES OBLIGATORIO','ERROR');
		}
		else
		{
                $fechaactual=date('d-m-Y');
                $dias	= (strtotime($fechaactual)-strtotime($fecha_emision))/86400;
                if($dias>=60 || $dias <0)
                {
					$this->Vista->mensaje('FECHA DE EMISION ERRONEA','ERROR','');
                }
                else{
				    $this->Detallegastotemporal->query('BEGIN WORK');
				   	$data['Detallegastotemporal']['gastotemporal_id']=$gastotemporal_id;
					$data['Detallegastotemporal']['tipogasto_id']=$tipogasto_id;
					$data['Detallegastotemporal']['monto']=$this->Interfaz->miles_postgres($monto);
					$data['Detallegastotemporal']['numero_factura']=$numero_factura;
					$data['Detallegastotemporal']['fecha_factura']=$this->Utilitario->guar_fecha($fecha_emision);
					;
					$data['Detallegastotemporal']['proveedor_id']=$proveedor_id;
					$data['Detallegastotemporal']['soporte_id']=$soporte_id;
					if(!empty($documento))
					{
				    $data['Detallegastotemporal']['nombredocumento']=$documento;
					$data['Detallegastotemporal']['documento']= $this->Detallegastotemporal->importar($ruta.$documento);
					exec("cd $ruta"."; rm $documento");
					}
					if ($this->Detallegastotemporal->save($data))
			 		{
			 			$id=$this->Detallegastotemporal->id;
						$this->Vista->mensaje('Detalle Cargado Exitosamente','EXITO','vacio');
						$this->Detallegastotemporal->query('COMMIT');	
			 			$detalles=$this->Detallegastotemporal->find('all',array('conditions'=> array("Detallegastotemporal.gastotemporal_id "=>$gastotemporal_id)));
			 			for($i=0; $i<count($detalles); $i++){
	                        $total=$detalles[$i]['Detallegastotemporal']['monto']+$total;

	                    }
					    $gastotemporal=$this->Gastotemporal->find('first',array('conditions'=>array('Gastotemporal.id'=>$gastotemporal_id)));
					    $this->Gastotemporal->query('BEGIN WORK');
					    if(isset($gastotemporal['Gastotemporal']['id'])){	
					        $montos['Gastotemporal']['id']=$gastotemporal_id;	
							$montos['Gastotemporal']['total']=$total;
							if($this->Gastotemporal->save($montos)){
							$this->Gastotemporal->query('COMMIT');	
							}
							else{
							$this->Vista->mensaje('OCURRIO UN ERROR  AL ACTUALIZAR EL MONTO DEL REEMBOLSO','ERROR','');
							$this->Gastotemporal->query('ROLLBACK');
							}
				     	}
						echo "<script type=\"text/javascript\" language=\"javascript\">
						document.getElementById('tipogasto_id').selectedIndex = '';
						document.getElementById('numero_factura').value = '';
						document.getElementById('fecha_emision').value = '';
						document.getElementById('proveedor_rif').value = '';
						document.getElementById('proveedor_id').value = 0;
						document.getElementById('proveedor_nombre').value = '';
						document.getElementById('documento').value = '';
						document.getElementById('soporte_id').selectedIndex = '';
						document.getElementById('monto').value = '';
						document.getElementById('total').value = $total;
						</script>"; 
					}
					else
					{
						$this->Vista->mensaje('OCURRIO UN ERROR EL DETALLE AL REEMBOLSO','ERROR','');
						$this->Detallegastotemporal->query('ROLLBACK');
					}
			    }
		}

		if(count($detalles)){
		$this->buscar_detalles_cargados_a_reembolso($gastotemporal_id);
		$this->set('mostrar',$mostrar);
		$this->render('buscar_detalles_cargados_a_reembolso');
	    }
	}


function buscar_detalles_cargados_a_reembolso($gastotemporal_id1)
	{
		if(isset($gastotemporal_id1) && (!empty($gastotemporal_id1))){
			$datos=$this->Detallegastotemporal->find('all',array('conditions'=> array('Detallegastotemporal.gastotemporal_id'=> $gastotemporal_id1)));
			$this->set('lista_detalles',$datos);
			$this->set('gastotemporal_id2',$gastotemporal_id1);
		
		}
		else
		{
			$this->Vista->mensaje('OCURRIO UN ERROR EN EL DETALLE AL REEMBOLSO','ERROR','');
		}
	}



	public function guardar() {
		//pr($this->request->data);
		$this->permisos_opcion_individual('gastos','nuevo','estatus'); 
		$ventana_final=$this->request->data['ventana'];
		$data=$this->Interfaz->data($this->request->data);
       	extract($data);
		if(!empty($data['gastotemporal_id1'])){
		$cantidaddetalles=$this->Detallegastotemporal->find('count',array('conditions'=>array('Detallegastotemporal.gastotemporal_id'=>$data['gastotemporal_id1'])));
	        	if($cantidaddetalles>0){
				$gt = $this->Gastotemporal->find('first',array('conditions'=>array('Gastotemporal.id'=>$data['gastotemporal_id1'])));
					if(count($gt)>0)
					{               $this->Gasto->query('BEGIN WORK');
									$guardo=true;
									$g=null;
									$g['Gasto']['trabajador_id']=$gt['Gastotemporal']['trabajador_id'];
									$g['Gasto']['total']=$gt['Gastotemporal']['total'];
									$g['Gasto']['status']=$gt['Gastotemporal']['estatus'];
									$g['Gasto']['observacion']=$gt['Gastotemporal']['observacion'];
									$g['Gasto']['patologia_id']=$gt['Gastotemporal']['patologia_id'];
								
										if ($this->Gasto->saveall($g))
										{
											$id_gasto=$this->Gasto->id;
											$gd = $this->Detallegastotemporal->find('all',array('conditions'=>array('Detallegastotemporal.gastotemporal_id'=>$data['gastotemporal_id1'])));
											if(count($gd)>0)
											{
												for($z=0; $z< count($gd);$z++){
											    $d['Detallegasto']['gasto_id']=$id_gasto;	
											    $d['Detallegasto']['proveedor_id']=$gd[$z]['Detallegastotemporal']['proveedor_id'];	
											    $d['Detallegasto']['numero_factura']=$gd[$z]['Detallegastotemporal']['numero_factura'];	
											    $d['Detallegasto']['monto']=$gd[$z]['Detallegastotemporal']['monto'];
											    $d['Detallegasto']['fecha_factura']=$gd[$z]['Detallegastotemporal']['fecha_factura'];
											    $d['Detallegasto']['soporte_id']=$gd[$z]['Detallegastotemporal']['soporte_id'];	
											    $d['Detallegasto']['tipogasto_id']=$gd[$z]['Detallegastotemporal']['tipogasto_id'];
											    $d['Detallegasto']['documento']=$gd[$z]['Detallegastotemporal']['documento'];	
											    $d['Detallegasto']['nombredocumento']=$gd[$z]['Detallegastotemporal']['nombredocumento'];	


													if  (!$this->Detallegasto->saveall($d)){
														$guardo=false;
														break;
													}

												}

												if ($guardo){
													$this->Vista->mensaje("Gasto Guardado Exitosamente!!!",'EXITO');
								                    $this->Detallegasto->query('COMMIT');
								                    $this->Detallegastotemporal->deleteAll(array('Detallegastotemporal.gastotemporal_id' => $data['gastotemporal_id1']), false);
								                    $this->Gastotemporal->deleteAll(array('Gastotemporal.id' => $data['gastotemporal_id1']), false);  
								                    $this->Vista->cerrar_ventana($ventana_final);

												}
												else{
												$this->Vista->mensaje("Ocurrio un error guardando el Reembolso",'ERROR');
												$this->Gasto->query('ROLLBACK');	
												}
											}
											else{	
											$this->Vista->mensaje("El Reembolso necesita al menos un detalle",'ERROR');
											$this->Gasto->query('ROLLBACK');		
		                                	}
		                                }
		                                else{	
										$this->Vista->mensaje("Ocurrio un error guardando el Reembolso",'ERROR');
										$this->Gasto->query('ROLLBACK');		
		                                }
					}
				}
			else{

			$this->Vista->mensaje("No ha agregado ningun detalle al Reembolso",'ERROR');	
		    }	
		}
		else{
		

			$this->Vista->mensaje("No ha agregado ningun detalle al Reembolso",'ERROR');	
		}
			$this->listado_gasto();
		    $this->render('listado_gasto');
	}


	public function buscador_proveedor() 
	{
		$this->set('div','rif');
		$this->set('divlistado',DOCULTO);
	}

	public function listado_buscador_proveedor($vent=null,$div=null,$para=null) 
	{
		if(isset($para) && !empty($para))
		{
			$this->set('data',$this->Proveedor->find('all',array('conditions'=> array("Proveedor.id >"=>'0',"OR"=>array('Proveedor.nombre ilike'=>"%$para%",'Proveedor.rif ilike'=>"%$para%")),'order'=>'Proveedor.nombre')));
			$this->set('busq',$para);
		}
		else
		{
			$this->set('data',null);
			$this->set('busq','');
		}
		echo "<script type='text/javascript'>document.getElementById('$div').style.display='block';</script>";
		$this->set('vent',$vent);
	}

	function lista_estatus(){	
		$estatus[1]='POR PAGAR';
		$estatus[2]='PAGADO';
		$estatus[3]='ANULADO';
		return $estatus;
	}

	public function dato_proveedor($rif=null){
		if(isset($rif) && !empty($rif)){
			$rif=$this->Interfaz->cedulasinguion($this->Utilitario->mayuscula($rif));
			$d=$this->Proveedor->find('first',array('conditions'=> array("Proveedor.rif"=>$rif,"Proveedor.id >"=>0)));
			//$valida_proveedor=$this->Proveedor->find('count',array('conditions'=> array("Proveedor.rif"=>$rif,"Proveedor.id >"=>0)));
			
			if(isset($d['Proveedor']['id']) && $d['Proveedor']['estatus']==1) 
			{
				$condicion=1;
				$nombre=$d['Proveedor']['nombre'];
				$this->set('proveedor_id',$d['Proveedor']['id']);
				$this->nombre_proveedor($condicion,$nombre,$rif);
			    $this->render("nombre_proveedor");	
			}
			elseif(isset($d['Proveedor']['id']) && $d['Proveedor']['estatus']==2){
				$this->set('proveedor_id',0);
			    $this->Vista->mensaje("Este proveedor se encuentra desabilitado",'ERROR');
		        $this->render("guardar_proveedor");	
			
			}
			else{
				$condicion=0;
				$nombre='';   
				$this->set('proveedor_id',0);
				$this->nombre_proveedor($condicion,$nombre,$rif);
		        $this->render("nombre_proveedor");
			}
			 
		}
		else{
		$this->Vista->mensaje("El RIF no debe estar vacío",'ERROR');
		$this->render("guardar_proveedor");	
		}
		
	}

	public function nombre_proveedor($condicion=null,$nombre=null,$rif=null) 
	{	
		$this->set('condicion',$condicion);
		$this->set('nombre',$nombre);
		$this->set('rif',$rif);
		$this->set('lista_estados',$this->Utilitario->lista_estados());
	}
	public function seleccionar_proveedor($vent=null,$id=null){
		if(isset($vent) && isset($id)){
			$id=$this->Interfaz->id($id);
			$d=$this->Proveedor->find('first',array('conditions'=> array("Proveedor.id"=>$id)));
			echo "<script type='text/javascript'>
					document.getElementById('proveedor_id').value='".$d['Proveedor']['id']."';
					document.getElementById('proveedor_rif').value='".$this->Interfaz->cedulaguion($d['Proveedor']['rif'])."';
					document.getElementById('proveedor_nombre').value='".$d['Proveedor']['nombre']."';
					document.getElementById('proveedor_telefono').value='".$d['Proveedor']['telefono']."';
				</script>";
			//$this->Vista->cerrar_ventana($vent);
		}
		$this->render("../".PRINCIPAL."/mensajes");
	}


	public function upload_documentos($campo) 
	{	

		$div='vista';
		$divlistado='vista';
		$this->set('div',$div);
		$this->set('divlistado',$divlistado);
		$this->set('campo',$campo);
		$this->Vista->title('Subir Archivo');

	}

	public function buscador_trabajador() 
	{
		$this->set('div','rif');
		$this->set('divlistado',DLOAD);

	}

	public function listado_buscador_trabajador($vent=null,$div=null,$para=null) 
	{
		if(isset($para) && !empty($para))
		{
			$condiciones['Trabajador.unidad_id']=$this->Perfil->unidades($this->Interfaz->id($_SESSION['usuario_id']));
			$condiciones['Trabajador.id >']=0;
			$this->set('data',$this->Trabajador->find('all',array('conditions'=> array($condiciones,"OR"=>array('Trabajador.nombrecompleto ilike'=>"%$para%",'Trabajador.rif ilike'=>"%$para%",'Trabajador.certificado ilike'=>"%$para%")),'order'=>'Trabajador.nombre')));
			$this->set('busq',$para);
			$this->set('vent',$vent);
		}
		else
		{
			$this->set('data',null);
			$this->set('busq','');
			$this->set('vent',$vent);
		}
		echo "<script type='text/javascript'>document.getElementById('$div').style.display='block';</script>";
		$this->set('vent',$vent);
	}

	public function dato_trabajador($rif=null){
		if(isset($rif)){
			$rif=$this->Interfaz->cedulasinguion($this->Utilitario->mayuscula($rif));
			$d=$this->Trabajador->find('first',array('conditions'=> array("Trabajador.rif"=>$rif)));
			if(isset($d['Trabajador']['id']) && $d['Trabajador']['id'] > 0){
				echo "<script type='text/javascript'>
					document.getElementById('trabajador_id').value='".$d['Trabajador']['id']."';
					document.getElementById('trabajador_rif').value='".$this->Interfaz->cedulaguion($d['Trabajador']['rif'])."';
					document.getElementById('trabajador_nombre').value='".$d['Trabajador']['nombre']."';
					document.getElementById('trabajador_apellido').value='".$d['Trabajador']['apellido']."';
					
				</script>";
			}
			else{
				echo "<script type='text/javascript'>
					document.getElementById('trabajador_id').value='0';
					document.getElementById('trabajador_rif').value='';
					document.getElementById('trabajador_nombre').value='';
					document.getElementById('trabajador_apellido').value='';
				</script>";
				}
		
			}
		$this->render("../".PRINCIPAL."/mensajes");
	}

	public function seleccionar_trabajador($vent=null,$id=null){
		if(isset($vent) && isset($id)){
			$id=$this->Interfaz->id($id);
			$d=$this->Trabajador->find('first',array('conditions'=> array("Trabajador.id"=>$id)));
			echo "<script type='text/javascript'>
					document.getElementById('trabajador_id').value='".$d['Trabajador']['id']."';
					document.getElementById('trabajador_rif').value='".$this->Interfaz->cedulaguion($d['Trabajador']['rif'])."';
					document.getElementById('trabajador_nombre').value='".$d['Trabajador']['nombre']."';
					document.getElementById('trabajador_apellido').value='".$d['Trabajador']['apellido']."';
				</script>";
		}
		$this->render("../".PRINCIPAL."/mensajes");
	}


	public function filtrado_gasto() {
		$this->permisos_opcion_individual('gastos','filtro','estatus'); // mensaje que se quiere mostrar
		$condiciones['Unidad.id']=$this->Perfil->unidades($this->Interfaz->id($_SESSION['usuario_id']));
		$this->set('lista_unidad',$this->Unidad->find('list', array('fields' => array('Unidad.id', 'Unidad.nombre'),'conditions'=>$condiciones)));
		$this->set('lista_estados',$this->Utilitario->lista_estados());
		$this->set('lista_estatus',$this->lista_estatus());
		$this->set('lista_patologia',$this->Patologia->find('list', array('fields' => array('Patologia.id', 'Patologia.nombre' ))));
	}

	public function listado_filtrado_gasto($vent=null) {
		$data=$this->request->data;
		$busq='';
		$this->set('opciones',$this->serializador($data,2));
		extract($data);
		$condiciones['Gasto.id >']=0;
		if(!empty($$fecha_i))
		{

			$vfi=$this->Utilitario->guar_fecha($$fecha_i);		
			if(empty($$fecha_f))
				{ $vff=$vfi; }
			else if(!empty($$fecha_f)){ $vff=$this->Utilitario->guar_fecha($$fecha_f);}
			if($this->diferencias_dias($vfi,$vff)<0){
				$a=$vfi;
			 	$vfi=$vff;
				$vff=$a;
			}else{
				$vfi=$vfi;
				$vff=$vff;
			}	
			if($status==2 || $status==3)
			$condiciones['CAST(Gasto.modified AS date) BETWEEN ? AND ?']=array($vfi,$vff);
		    else
		    $condiciones['CAST(Gasto.created AS date) BETWEEN ? AND ?']=array($vfi,$vff);
		}
 		$condiciones['Trabajador.unidad_id']=$this->Perfil->unidades($this->Interfaz->id($_SESSION['usuario_id']));
		if(!empty($unidad_id) && $unidad_id>0){ $condiciones['Trabajador.unidad_id']=$unidad_id;}
		if(!empty($rif) ){ $condiciones['Trabajador.rif ilike ']="%$rif%"; $busq=$rif;}
		if(!empty($nombre)){ $condiciones['Trabajador.nombrecompleto ilike ']="%$nombre%"; $busq=$nombre;}
		if(!empty($status)){ $condiciones['Gasto.estatus']=$status;}
		if(!empty($patologia_id)){ $condiciones['Gasto.patologia_id']=$patologia_id;}
		$this->permisos_menu_individual('gastos');
		$total=$this->Gasto->find('count',array('conditions'=> $condiciones));
		$this->Gasto->recursive=2;
		$data=$this->Gasto->find('all',array('conditions'=> $condiciones,'limit'=>MAX_PAGI));
		if($total>MAX_PAGI) $mos=MAX_PAGI;
		else $mos=$total;
		$this->set('data',$data);$this->set('busq',$busq);
		$this->Vista->title('Reembolsos Encontrados (Mostrando '.$mos.' de '.$total.' Registros Encontrados)');
		if($total>0)
		$this->Vista->cerrar_ventana($vent);
	}

public function anular($id=null)
	{
		$this->permisos_opcion_individual('gastos','estatus','anular');
		   if(isset($id)){
				$id=$this->Interfaz->id($id);
				$datos=$this->Gasto->find('first',array('fields'=>array('Gasto.id','Gasto.estatus'),'conditions'=>array('Gasto.id'=>$id)));
				if(isset($datos['Gasto']['id'])&&($datos['Gasto']['estatus']==1)){			
					$data['Gasto']['id']=$id;
					$data['Gasto']['estatus']=3;
					$this->Gasto->query('BEGIN WORK');
					if($this->Gasto->save($data)){
						$this->Vista->mensaje("Gasto Anulado Exitosamente",'Exito');
						$this->Gasto->query('COMMIT');	
	                }

				else{
						$this->Vista->mensaje("Ocurrio un error Anulando el Reembolso",'ERROR');
						$this->Gasto->query('ROLLBACK');
					}

				}	
			}
			else{
				$this->Vista->mensaje("Estas intentando violar la seguridad agropatria",'ERROR');
			}
	     	$this->listado_gasto();
			$this->render('listado_gasto');  	
	}


	public function pagar($id=null,$vent=null)
	{
		$this->permisos_opcion_individual('gastos','estatus','pagar');
		$data=$this->request->data;
		if(!$this->Vista->empyt($data,array('rif_trabajador','nombre_trabajador','patologia_id','total'))){
			extract($data);
		   if(isset($id)){
				$id=$this->Interfaz->id($id);
				$datos=$this->Gasto->find('first',array('fields'=>array('Gasto.id','Gasto.estatus'),'conditions'=>array('Gasto.id'=>$id)));
				if(isset($datos['Gasto']['id'])&&($datos['Gasto']['estatus']==1)){			
					$data['Gasto']['id']=$id;
					$data['Gasto']['monto_pagado']=$this->Interfaz->miles_postgres($monto_pagado);
					$data['Gasto']['observacion_pago']=$observacion_pago;
					$data['Gasto']['estatus']=2;
			        $this->Gasto->query('BEGIN WORK');
					if($this->Gasto->save($data)){
						$this->Vista->mensaje("Reembolso Pagado Exitosamente",'Exito');
						$this->Gasto->query('COMMIT');
						$this->Vista->cerrar_ventana($vent);
	                }
				else{
						$this->Vista->mensaje("Ocurrio un error Pagando el Reembolso",'ERROR');
						$this->Gasto->query('ROLLBACK');
					}

				}	
			}
			else{
				$this->Vista->mensaje("Estas intentando violar la seguridad agropatria",'ERROR');
			}
	     	$this->listado_gasto();
			$this->render('listado_gasto');
	    }
	}


	public function nuevo_pago($id=null) {
		$this->permisos_opcion_individual('gastos','estatus','pagar');
		if(isset($id)){
			$id=$this->Interfaz->id($id);
			$datos=$this->Gasto->find('first',array('conditions'=>array('Gasto.id'=>$id)));
			$datos_detalles=$this->Detallegasto->find('all',array('conditions'=>array('Detallegasto.gasto_id'=>$id )));
			
			if(isset($datos['Gasto']['id'])){
				$this->set('data',$datos);
			    $this->set('id',$id);
				$this->set('lista_detalles',$datos_detalles);
				$this->set('lista_patologias',$this->Patologia->find('list', array('fields' => array('Patologia.id', 'Patologia.nombre'), 'conditions'=>array('Patologia.id'=>$datos['Gasto']['patologia_id']))));
			}
			else{
				$this->Vista->mensaje("Estas intentando violar la seguridad agropatria",'ERROR');
				$this->render("../".PRINCIPAL."/mensajes");
			}			
		}
		else{
			$this->Vista->mensaje("Debes Indicar el Gasto!!!",'INFORMACION');
			$this->render("../".PRINCIPAL."/mensajes");
		}
	}

	public function ver_dato_gasto($id=null) {
		$this->permisos_opcion_individual('gastos','estatus','ver');
		if(isset($id)){
			$id=$this->Interfaz->id($id);
			$datos=$this->Gasto->find('first',array('conditions'=>array('Gasto.id'=>$id)));
		    $datos_detalles=$this->Detallegasto->find('all',array('conditions'=>array('Detallegasto.gasto_id'=>$id )));
	
			if(isset($datos['Gasto']['id'])){
				$this->set('data',$datos);
				//$this->set('id',$id); 
				$this->set('lista_detalles',$datos_detalles);
				$this->set('lista_patologias',$this->Patologia->find('list', array('fields' => array('Patologia.id', 'Patologia.nombre'), 'conditions'=>array('Patologia.id'=>$datos['Gasto']['patologia_id']))));
			}
			else{
				$this->Vista->mensaje("Estas intentando violar la seguridad agropatria",'ERROR');
				$this->render("../".PRINCIPAL."/mensajes");
			}			
		}
		else{
			$this->Vista->mensaje("Debes Indicar el Gasto!!!",'INFORMACION');
			$this->render("../".PRINCIPAL."/mensajes");
		}
	}


	public function reporte_excel_gastos($tipo,$busq=null){
		$this->set('busq',$busq);$this->set('tipo',$tipo);
		$condiciones['Gasto.id >']=0;
		$condiciones['Trabajador.unidad_id']=$this->Perfil->unidades($this->Interfaz->id($_SESSION['usuario_id']));
		$data=$this->Gasto->find('all',array('conditions'=> $condiciones));
		$this->set('data',$data);
	
	}

	public function reporte_excel_filtrado_gastos($tipo,$opciones) 
	{
		//$this->permisos_opcion_individual('gastos','estatus','excel');
		$this->set('tipo',$tipo);
		$data=$this->serializador($opciones,1); //1 convierte la cadena serializada en un arreglo
		if(is_array($data))
		{
			extract($data);
			$condiciones['Gasto.id >']=0;
			if(!empty($$fecha_i)){
			$vfi=$this->Utilitario->guar_fecha($$fecha_i);		
			if(empty($$fecha_f))
				{ $vff=$vfi; }
			else if(!empty($$fecha_f)){ $vff=$this->Utilitario->guar_fecha($$fecha_f);}
	        if($this->diferencias_dias($vfi,$vff)<0){
				$a=$vfi;
			 	$vfi=$vff;
				$vff=$a;
			}else{
				$vfi=$vfi;
				$vff=$vff;
			}	
			if($status==2 || $status==3)
			$condiciones['CAST(Gasto.modified AS date) BETWEEN ? AND ?']=array($vfi,$vff);
		    else
		    $condiciones['CAST(Gasto.created AS date) BETWEEN ? AND ?']=array($vfi,$vff);
		    }
		    $condiciones['Trabajador.unidad_id']=$this->Perfil->unidades($this->Interfaz->id($_SESSION['usuario_id']));
			if(!empty($unidad_id) && $unidad_id>0){ $condiciones['Trabajador.unidad_id']=$unidad_id;}
			if(!empty($rif) ){ $condiciones['Trabajador.rif ilike ']="%$rif%"; $busq=$rif;}
			if(!empty($nombre)){ $condiciones['Trabajador.nombrecompleto ilike ']="%$nombre%"; $busq=$nombre;}
			if(!empty($status)){ $condiciones['Gasto.estatus']=$status; $busq=$status;}
			if(!empty($patologia_id)){ $condiciones['Gasto.patologia_id']=$patologia_id;}
			$data2=$this->Gasto->find('all',array('conditions'=> $condiciones));
			$this->set('data',$data2);	
			pr($data2);	
		}
		else
		{
			echo "ESTAS INTENTANDO VIOLAR LA SEGURIDAD AGROPATRIA";
		}

		
	}


	public function reporte_pdf_filtrado_gastos($tipo,$opciones) 
	{
		
	    $this->set('tipo',$tipo);
		$data=$this->serializador($opciones,1); //1 convierte la cadena serializada en un arreglo
		
		if(is_array($data))
		{
			extract($data);
			$condiciones['Gasto.id >']=0;
			if(!empty($$fecha_i)){
			$vfi=$this->Utilitario->guar_fecha($$fecha_i);		
			if(empty($$fecha_f))
				{ $vff=$vfi; }
			else if(!empty($$fecha_f)){ $vff=$this->Utilitario->guar_fecha($$fecha_f);}
	        if($this->diferencias_dias($vfi,$vff)<0){
				$a=$vfi;
			 	$vfi=$vff;
				$vff=$a;
			}else{
				$vfi=$vfi;
				$vff=$vff;
			}	
			if($status==2 || $status==3)
			$condiciones['CAST(Gasto.modified AS date) BETWEEN ? AND ?']=array($vfi,$vff);
		    else
		    $condiciones['CAST(Gasto.created AS date) BETWEEN ? AND ?']=array($vfi,$vff);
		    }
		    $condiciones['Trabajador.unidad_id']=$this->Perfil->unidades($this->Interfaz->id($_SESSION['usuario_id']));
			if(!empty($unidad_id) && $unidad_id>0){ $condiciones['Trabajador.unidad_id']=$unidad_id;}
			if(!empty($rif) ){ $condiciones['Trabajador.rif ilike ']="%$rif%"; $busq=$rif;}
			if(!empty($nombre)){ $condiciones['Trabajador.nombrecompleto ilike ']="%$nombre%"; $busq=$nombre;}
			if(!empty($status)){ $condiciones['Gasto.estatus']=$status; $busq=$status;}
			if(!empty($patologia_id)){ $condiciones['Gasto.patologia_id']=$patologia_id;}
			$data=$this->Gasto->find('all',array('conditions'=> $condiciones));
			$this->set('data',$data);	

		}
		else
		{
			echo "ESTAS INTENTANDO VIOLAR LA SEGURIDAD AGROPATRIA";
		}

		
	}



	public function reporte_pdf_gastos($tipo='',$busq=null) 
	{
		$this->set('busq',$busq);$this->set('tipo',$tipo);
		$condiciones['Gasto.id >']=0;
		$condiciones['Trabajador.unidad_id']=$this->Perfil->unidades($this->Interfaz->id($_SESSION['usuario_id']));
		$data=$this->Gasto->find('all',array('conditions'=> $condiciones));
		$this->set('data',$data);
	}

	


	public function exportar_pdf_gastos($id=null, $tipo=null, $nombre=null){
	     	$id=$this->Interfaz->id($id);
		    if(isset($id)){
			if(!empty($nombre)){
		        $ruta=ROOT.DS.WEBROOT_DIR.DS."files".DS;	
		        if ($tipo==1){
		        $query="SELECT lo_export(documento, '{$ruta}{$nombre}') FROM detallegastotemporals WHERE id=$id";
		        $this->Detallegastotemporal->query($query);
		        }
		        else if ($tipo==2){
		        $query="SELECT lo_export(documento, '{$ruta}{$nombre}') FROM detallegastos WHERE id=$id";
		        $this->Detallegasto->query($query);	
		        }
		        $this->set('nombre',$nombre);
	      	}
	        else{
	        $this->Vista->mensaje("Este detalle no tiene documentos asociados",'ERROR');
	        $this->render('buscar_detalles_cargados_a_reembolso');
	        }
        }
   }

	public function modificar_dato_gasto($id=null) {
			$this->permisos_opcion_individual('gastos','estatus','modificar'); //permisos darwin
		    if(isset($id)){
			$id=$this->Interfaz->id($id);
			$datos=$this->Gasto->find('first',array('conditions'=>array('Gasto.id'=>$id)));
		    $datos_detalles=$this->Detallegasto->find('all',array('conditions'=>array('Detallegasto.gasto_id'=>$id )));
	
			if(isset($datos['Gasto']['id'])){
				$this->set('data',$datos);
				$this->set('id',$id); 
				$this->set('lista_detalles',$datos_detalles);
				$this->set('lista_patologias',$this->Patologia->find('list', array('fields' => array('Patologia.id', 'Patologia.nombre'))));
			}
			else{
				$this->Vista->mensaje("Estas intentando violar la seguridad agropatria",'ERROR');
				$this->render("../".PRINCIPAL."/mensajes");
			}			
		}
		else{
			$this->Vista->mensaje("Debes Indicar el Gasto!!!",'INFORMACION');
			$this->render("../".PRINCIPAL."/mensajes");
		}
	}

	public function modificar($id=null,$vent=null)
	{
		$data=$this->request->data;
		$this->permisos_opcion_individual('gastos','estatus','modificar');
		if(!$this->Vista->empyt($data,array('observacion'))){
		    extract($data);
		  	if(isset($id)){
			    $id=$this->Interfaz->id($id);
				$datos=$this->Gasto->find('first',array('conditions'=>array('Gasto.id'=>$id)));
				if(isset($datos['Gasto']['id'])&&($datos['Gasto']['estatus']==1)){			
					$data['Gasto']['id']=$id;
					$data['Gasto']['patologia_id']=$patologia_id;
					$data['Gasto']['observacion']=$this->Utilitario->mayuscula($observacion);
					$this->Gasto->query('BEGIN WORK');
						if($this->Gasto->save($data)){
							$this->Vista->mensaje("Gasto modificado Exitosamente",'Exito');
							$this->Gasto->query('COMMIT');
							$this->Vista->cerrar_ventana($vent);
				        }
						 else{
							$this->Vista->mensaje("Ocurrio un error modificando el Reembolso",'ERROR');
							$this->Gasto->query('ROLLBACK');
						}
				}	
			}
			else{
						$this->Vista->mensaje("Estas intentando violar la seguridad agropatria",'ERROR');
			}
		}
		$this->listado_gasto();
		$this->render('listado_gasto');
	}



	public function guardar_proveedor($vent=null) {
		$this->permisos_opcion_individual('proveedor','nuevo','estatus'); // mensaje que se quiere mostrar
		$data=$this->request->data;
        if(!$this->Vista->empyt($data,array('telefono','municipio_id'))){
			extract($data);
			$this->Proveedor->query('BEGIN WORK');
			$d['Proveedor']['estatus']=1;
		    $d['Proveedor']['rif']=$this->Interfaz->cedulasinguion($this->Utilitario->mayuscula($rif));
			$d['Proveedor']['nombre']=$this->Utilitario->mayuscula($nombre);
			$d['Proveedor']['direccion']=$this->Utilitario->mayuscula($direccion);
			$d['Proveedor']['telefono']=$telefono;
			$d['Proveedor']['estado_id']=$estado_id;
			$d['Proveedor']['municipio_id']=$municipio_id;
				if($this->Proveedor->save($d)){
					$this->Vista->mensaje("Proveedor Guardado Exitosamente!!!",'EXITO');
					$this->Proveedor->query('COMMIT');
					$condicion=1;
					$this->Vista->cerrar_ventana($vent);
					$this->nombre_proveedor($condicion,$nombre,$rif);
					$this->set('proveedor_id',$this->Proveedor->id);
 		           	$this->render("nombre_proveedor");
				}
				else{
					$condicion=0;
					$this->Vista->mensaje("Ocurrio un error actualizando proveedores",'ERROR');
					$this->Proveedor->query('ROLLBACK');
					$this->set('proveedor_id',0);
 			        $this->render("nombre_proveedor");
				}	

			}
	}


}
